# Return the desired percentiles plus the geometric mean
bp.vals <- function(x, probs=c(.05, 0.25, 0.5, 0.75, .95), width=0.8) {
  r <- quantile(x, probs=probs , na.rm=TRUE)
  r <- c(r, width)
  names(r) <- c("ymin", "lower", "middle", "upper", "ymax", "width")
  r
}

\(I_o\) for all itineraries

ggplot(data = user_itineraries_complete, 
       aes(x = trip_length_bucket, 
           y = io)) +
    stat_summary(fun.data = bp.vals, geom = "boxplot", fill ="#fc8d62") +
    scale_y_log10(breaks = c(1:5)) +
    coord_flip() +
    xlab(expression(paste("d"[o], "(u) in mins"))) +
    ylab(expression(paste("User choice inefficiency (i"[o], ")"))) +
    guides(fill = FALSE)
ggsave("io-for-all.pdf", width = 5, height = 2.2)

Overall, longer itineraries tend to incurr in higher inefficiencies. For 20-30min itineraries, more than half have no inefficiency. For 40-50 min itineraries, half of the itineraries have an inefficiency of 1.6 or higher. For a 45 mins itinerary, \(i_o = 1.6\) implies there was an 28-min alterantive.

\(i_s\) for all \(i_c\)

ggplot(data = user_itineraries_complete, 
       aes(x = trip_length_bucket, 
           y = is)) +
    stat_summary(fun.data = bp.vals, geom = "boxplot", fill ="#7DBBC3") +
    scale_y_log10(breaks = c(1, 1.2, 1.4)) +
    coord_flip() +
    xlab(expression(paste("d"[o], "(u) in mins"))) +
    ylab(expression(paste("System operation inefficiency (i"[s], ")"))) +
    guides(fill = FALSE)
ggsave("is-for-all.pdf", width = 5, height = 2.2)

Contrary to what is experienced by user, system efficiency is concentrated on shorter itineraries. For 40-50-min itineraries, over 75% of all itineraries have no inefficiency.

It seems that most inefficiency in longer itineraries experienced by users is not due to system operation inefficiency.

Considering \(i_c\)

How often do users choose the best itinerary according to the schedule?

user_itineraries_complete %>% 
    group_by(trip_length_bucket) %>% 
    select(ic) %>% 
    summarise(best = sum(ic == 0, na.rm = T) / sum(!is.na(ic)), 
              n = sum(!is.na(ic))) 
Adding missing grouping variables: `trip_length_bucket`

Most of the time we can identify which trip from the schedule a user took, the user took the best according to the schedule. This happens 85-89% of the itineraries, depending on their duration.

Did the schedule happen faithfully when the user followed it?

user_itineraries_complete %>% 
    group_by(trip_length_bucket) %>% 
    filter(!is.na(ic), ic == 0) %>% 
    ggplot(aes(x = trip_length_bucket, 
               y = is)) +
    stat_summary(fun.data = bp.vals, geom = "boxplot", fill ="#7DBBC3") +
    # scale_y_log10() +
    coord_flip() +
    xlab(expression(paste("d"[o], "(u) in mins"))) +
    ylab(expression(paste("System operation inefficiency (i"[s], ")"))) +
    guides(fill = FALSE)

     
user_itineraries_complete %>% 
    group_by(trip_length_bucket) %>% 
    filter(!is.na(ic), ic == 0) %>% 
    ggplot(aes(x = trip_length_bucket, 
               y = io)) +
    stat_summary(fun.data = bp.vals, geom = "boxplot", fill ="#fc8d62") +
    scale_y_log10(breaks = c(1, 1.1, 1.2, 1.3)) +
    coord_flip() +
    xlab(expression(paste("d"[o], "(u) in mins"))) +
    ylab(expression(paste("User choice inefficiency (i"[o], ")"))) +
    guides(fill = FALSE)
ggsave("io-for-ic_eq_zero.pdf", width = 5, height = 2.2)

Following the schedule in general leads users to a low inefficiency (\(i_o = 1\) for 66-80% of the itineraries) longer itineraries tend to have have lower inefficinecy.

\(i_c > 0\)

$i_c > 0 $

plotly::ggplotly(p)
We recommend that you use the dev version of ggplot2 with `ggplotly()`
Install it with: `devtools::install_github('hadley/ggplot2')`

When the user deviates from the itinerary recommended by the schedule, the user outperforms the choice proposed by the schedule a significant proportion of the time.

LS0tCnRpdGxlOiAiUGFwZXIgc3RvcmllcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKCnRoZW1lX3NldCh0aGVtZV9idygpKQoKYWxsX2l0aW5lcmFyaWVzIDwtIHJlYWRfY3N2KCJkYXRhL2FsbF9pdGluZXJhcmllc19tZXRyaWNzLXYyLmNzdiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVmYXVsdCA9IGNvbF9kb3VibGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGNvbF9kYXRlKGZvcm1hdCA9ICIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl90cmlwX2lkID0gY29sX2NoYXJhY3RlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGluZXJhcnlfaWQgPSBjb2xfaW50ZWdlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFubmVkX3N0YXJ0X3RpbWUgPSBjb2xfZGF0ZXRpbWUoZm9ybWF0ID0gIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc3RhcnRfdGltZSA9IGNvbF9kYXRldGltZShmb3JtYXQgPSAiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfc3RhcnRfdGltZSA9IGNvbF9kYXRldGltZShmb3JtYXQgPSAiIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaXBfbGVuZ3RoX2J1Y2tldCA9IGNvbF9jaGFyYWN0ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cl9vZl9kYXkgPSBjb2xfaW50ZWdlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJpb2Rfb2ZfZGF5ID0gY29sX2NoYXJhY3RlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gY29sX2NoYXJhY3RlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlfdHlwZSA9IGNvbF9jaGFyYWN0ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRpbmVyYXJ5X2lkX2ZvID0gY29sX2ludGVnZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRpbmVyYXJ5X2lkX2ZzID0gY29sX2ludGVnZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkgJT4lCiAgZmlsdGVyKGRhdGUgIT0geW1kKCIyMDE3LTA1LTEwIikpICU+JQogICAgbXV0YXRlKHBlcmlvZF9vZl9kYXkgPSBmYWN0b3IoCiAgICAgICAgcGVyaW9kX29mX2RheSwKICAgICAgICBvcmRlcmVkID0gVFJVRSwKICAgICAgICBsZXZlbHMgPSBjKAogICAgICAgICJlYXJseV9tb3JuaW5nIiwKICAgICAgICAibW9ybmluZyIsCiAgICAgICAgIm1pZGRheSIsCiAgICAgICAgImFmdGVybm9vbiIsCiAgICAgICAgImV2ZW5pbmciLAogICAgICAgICJuaWdodCIKICAgICAgICApCiAgICAgICAgKSkKICAgICAgICAKdXNlcl9pdGluZXJhcmllc19jb21wbGV0ZSA8LSBhbGxfaXRpbmVyYXJpZXMgJT4lCiAgICBmaWx0ZXIodHJpcF9sZW5ndGhfYnVja2V0ICE9ICI1MCsiKSAlPiUgCiAgICBncm91cF9ieShkYXRlLCB1c2VyX3RyaXBfaWQpICU+JQogICAgYXJyYW5nZShpdGluZXJhcnlfaWQpICU+JSAKICAgIHNsaWNlKDEpCgp1c2VyX2l0aW5lcmFyaWVzX3dpdGhfcGxhbnMgPC0gYWxsX2l0aW5lcmFyaWVzICU+JQogIGZpbHRlcihpdGluZXJhcnlfaWQgPT0gIjAiLCAhaXMubmEocGxhbm5lZF9kdXJhdGlvbl9taW5zKSkKCmBgYAoKYGBge3J9CiMgUmV0dXJuIHRoZSBkZXNpcmVkIHBlcmNlbnRpbGVzIHBsdXMgdGhlIGdlb21ldHJpYyBtZWFuCmJwLnZhbHMgPC0gZnVuY3Rpb24oeCwgcHJvYnM9YyguMDUsIDAuMjUsIDAuNSwgMC43NSwgLjk1KSwgd2lkdGg9MC44KSB7CiAgciA8LSBxdWFudGlsZSh4LCBwcm9icz1wcm9icyAsIG5hLnJtPVRSVUUpCiAgciA8LSBjKHIsIHdpZHRoKQogIG5hbWVzKHIpIDwtIGMoInltaW4iLCAibG93ZXIiLCAibWlkZGxlIiwgInVwcGVyIiwgInltYXgiLCAid2lkdGgiKQogIHIKfQpgYGAKCiMjICRJX28kIGZvciBhbGwgaXRpbmVyYXJpZXMKCgpgYGB7cn0KdXNlcl9pdGluZXJhcmllc19jb21wbGV0ZSAlPiUgCiAgICBncm91cF9ieSh0cmlwX2xlbmd0aF9idWNrZXQpICU+JSAKICAgIHN1bW1hcmlzZShtZWRpYW4oaW8pLCBtZWRpYW4oaXMpLCBzdW0oaW8gPT0gMSkgLyBuKCksIHN1bShpcyA9PSAxKSAvIG4oKSkKYGBgCgoKYGBge3J9CmdncGxvdChkYXRhID0gdXNlcl9pdGluZXJhcmllc19jb21wbGV0ZSwgCiAgICAgICBhZXMoeCA9IHRyaXBfbGVuZ3RoX2J1Y2tldCwgCiAgICAgICAgICAgeSA9IGlvKSkgKwogICAgc3RhdF9zdW1tYXJ5KGZ1bi5kYXRhID0gYnAudmFscywgZ2VvbSA9ICJib3hwbG90IiwgZmlsbCA9IiNmYzhkNjIiKSArCiAgICBzY2FsZV95X2xvZzEwKGJyZWFrcyA9IGMoMTo1KSkgKwogICAgY29vcmRfZmxpcCgpICsKICAgIHhsYWIoZXhwcmVzc2lvbihwYXN0ZSgiZCJbb10sICIodSkgaW4gbWlucyIpKSkgKwogICAgeWxhYihleHByZXNzaW9uKHBhc3RlKCJVc2VyIGNob2ljZSBpbmVmZmljaWVuY3kgKGkiW29dLCAiKSIpKSkgKwogICAgZ3VpZGVzKGZpbGwgPSBGQUxTRSkKZ2dzYXZlKCJpby1mb3ItYWxsLnBkZiIsIHdpZHRoID0gNSwgaGVpZ2h0ID0gMi4yKQpgYGAKCk92ZXJhbGwsIGxvbmdlciBpdGluZXJhcmllcyB0ZW5kIHRvIGluY3VyciBpbiBoaWdoZXIgaW5lZmZpY2llbmNpZXMuIEZvciAyMC0zMG1pbiBpdGluZXJhcmllcywgbW9yZSB0aGFuIGhhbGYgaGF2ZSBubyBpbmVmZmljaWVuY3kuIEZvciA0MC01MCBtaW4gaXRpbmVyYXJpZXMsIGhhbGYgb2YgdGhlIGl0aW5lcmFyaWVzIGhhdmUgYW4gaW5lZmZpY2llbmN5IG9mIDEuNiBvciBoaWdoZXIuIEZvciBhIDQ1IG1pbnMgaXRpbmVyYXJ5LCAkaV9vID0gMS42JCBpbXBsaWVzIHRoZXJlIHdhcyBhbiAyOC1taW4gYWx0ZXJhbnRpdmUuCgojIyAkaV9zJCBmb3IgYWxsICRpX2MkCgpgYGB7cn0KZ2dwbG90KGRhdGEgPSB1c2VyX2l0aW5lcmFyaWVzX2NvbXBsZXRlLCAKICAgICAgIGFlcyh4ID0gdHJpcF9sZW5ndGhfYnVja2V0LCAKICAgICAgICAgICB5ID0gaXMpKSArCiAgICBzdGF0X3N1bW1hcnkoZnVuLmRhdGEgPSBicC52YWxzLCBnZW9tID0gImJveHBsb3QiLCBmaWxsID0iIzdEQkJDMyIpICsKICAgIHNjYWxlX3lfbG9nMTAoYnJlYWtzID0gYygxLCAxLjIsIDEuNCkpICsKICAgIGNvb3JkX2ZsaXAoKSArCiAgICB4bGFiKGV4cHJlc3Npb24ocGFzdGUoImQiW29dLCAiKHUpIGluIG1pbnMiKSkpICsKICAgIHlsYWIoZXhwcmVzc2lvbihwYXN0ZSgiU3lzdGVtIG9wZXJhdGlvbiBpbmVmZmljaWVuY3kgKGkiW3NdLCAiKSIpKSkgKwogICAgZ3VpZGVzKGZpbGwgPSBGQUxTRSkKZ2dzYXZlKCJpcy1mb3ItYWxsLnBkZiIsIHdpZHRoID0gNSwgaGVpZ2h0ID0gMi4yKQoKYGBgCgpDb250cmFyeSB0byB3aGF0IGlzIGV4cGVyaWVuY2VkIGJ5IHVzZXIsIHN5c3RlbSBlZmZpY2llbmN5IGlzIGNvbmNlbnRyYXRlZCBvbiBzaG9ydGVyIGl0aW5lcmFyaWVzLiBGb3IgNDAtNTAtbWluIGl0aW5lcmFyaWVzLCBvdmVyIDc1XCUgb2YgYWxsIGl0aW5lcmFyaWVzIGhhdmUgbm8gaW5lZmZpY2llbmN5LgoKSXQgc2VlbXMgdGhhdCBtb3N0IGluZWZmaWNpZW5jeSBpbiBsb25nZXIgaXRpbmVyYXJpZXMgZXhwZXJpZW5jZWQgYnkgdXNlcnMgaXMgbm90IGR1ZSB0byBzeXN0ZW0gb3BlcmF0aW9uIGluZWZmaWNpZW5jeS4gCgojIyBDb25zaWRlcmluZyAkaV9jJAoKSG93IG9mdGVuIGRvIHVzZXJzIGNob29zZSB0aGUgYmVzdCBpdGluZXJhcnkgYWNjb3JkaW5nIHRvIHRoZSBzY2hlZHVsZT8gCgoKYGBge3J9CnVzZXJfaXRpbmVyYXJpZXNfY29tcGxldGUgJT4lIAogICAgZ3JvdXBfYnkodHJpcF9sZW5ndGhfYnVja2V0KSAlPiUgCiAgICBzZWxlY3QoaWMpICU+JSAKICAgIHN1bW1hcmlzZShiZXN0ID0gc3VtKGljID09IDAsIG5hLnJtID0gVCkgLyBzdW0oIWlzLm5hKGljKSksIAogICAgICAgICAgICAgIG4gPSBzdW0oIWlzLm5hKGljKSkpIAoKYGBgCgpNb3N0IG9mIHRoZSB0aW1lIHdlIGNhbiBpZGVudGlmeSB3aGljaCB0cmlwIGZyb20gdGhlIHNjaGVkdWxlIGEgdXNlciB0b29rLCB0aGUgdXNlciB0b29rIHRoZSBiZXN0IGFjY29yZGluZyB0byB0aGUgc2NoZWR1bGUuIFRoaXMgaGFwcGVucyA4NS04OSUgb2YgdGhlIGl0aW5lcmFyaWVzLCBkZXBlbmRpbmcgb24gdGhlaXIgZHVyYXRpb24uCgoKIyMjIERpZCB0aGUgc2NoZWR1bGUgaGFwcGVuIGZhaXRoZnVsbHkgd2hlbiB0aGUgdXNlciBmb2xsb3dlZCBpdD8KCmBgYHtyfQp1c2VyX2l0aW5lcmFyaWVzX2NvbXBsZXRlICU+JSAKICAgIGdyb3VwX2J5KHRyaXBfbGVuZ3RoX2J1Y2tldCkgJT4lIAogICAgZmlsdGVyKCFpcy5uYShpYyksIGljID09IDApICU+JSAKICAgIGdncGxvdChhZXMoeCA9IHRyaXBfbGVuZ3RoX2J1Y2tldCwgCiAgICAgICAgICAgICAgIHkgPSBpcykpICsKICAgIHN0YXRfc3VtbWFyeShmdW4uZGF0YSA9IGJwLnZhbHMsIGdlb20gPSAiYm94cGxvdCIsIGZpbGwgPSIjN0RCQkMzIikgKwogICAgIyBzY2FsZV95X2xvZzEwKCkgKwogICAgY29vcmRfZmxpcCgpICsKICAgIHhsYWIoZXhwcmVzc2lvbihwYXN0ZSgiZCJbb10sICIodSkgaW4gbWlucyIpKSkgKwogICAgeWxhYihleHByZXNzaW9uKHBhc3RlKCJTeXN0ZW0gb3BlcmF0aW9uIGluZWZmaWNpZW5jeSAoaSJbc10sICIpIikpKSArCiAgICBndWlkZXMoZmlsbCA9IEZBTFNFKQogICAgIAp1c2VyX2l0aW5lcmFyaWVzX2NvbXBsZXRlICU+JSAKICAgIGdyb3VwX2J5KHRyaXBfbGVuZ3RoX2J1Y2tldCkgJT4lIAogICAgZmlsdGVyKCFpcy5uYShpYyksIGljID09IDApICU+JSAKICAgIGdncGxvdChhZXMoeCA9IHRyaXBfbGVuZ3RoX2J1Y2tldCwgCiAgICAgICAgICAgICAgIHkgPSBpbykpICsKICAgIHN0YXRfc3VtbWFyeShmdW4uZGF0YSA9IGJwLnZhbHMsIGdlb20gPSAiYm94cGxvdCIsIGZpbGwgPSIjZmM4ZDYyIikgKwogICAgc2NhbGVfeV9sb2cxMChicmVha3MgPSBjKDEsIDEuMSwgMS4yLCAxLjMpKSArCiAgICBjb29yZF9mbGlwKCkgKwogICAgeGxhYihleHByZXNzaW9uKHBhc3RlKCJkIltvXSwgIih1KSBpbiBtaW5zIikpKSArCiAgICB5bGFiKGV4cHJlc3Npb24ocGFzdGUoIlVzZXIgY2hvaWNlIGluZWZmaWNpZW5jeSAoaSJbb10sICIpIikpKSArCiAgICBndWlkZXMoZmlsbCA9IEZBTFNFKQpnZ3NhdmUoImlvLWZvci1pY19lcV96ZXJvLnBkZiIsIHdpZHRoID0gNSwgaGVpZ2h0ID0gMi4yKQoKYGBgCgpGb2xsb3dpbmcgdGhlIHNjaGVkdWxlIGluIGdlbmVyYWwgbGVhZHMgdXNlcnMgdG8gYSBsb3cgaW5lZmZpY2llbmN5ICgkaV9vID0gMSQgZm9yIDY2LTgwJSBvZiB0aGUgaXRpbmVyYXJpZXMpIGxvbmdlciBpdGluZXJhcmllcyB0ZW5kIHRvIGhhdmUgaGF2ZSBsb3dlciBpbmVmZmljaW5lY3kuCgpgYGB7cn0KdXNlcl9pdGluZXJhcmllc19jb21wbGV0ZSAlPiUgCiAgICBncm91cF9ieSh0cmlwX2xlbmd0aF9idWNrZXQpICU+JSAKICAgIGZpbHRlcighaXMubmEoaWMpLCBpYyA9PSAwKSAlPiUgCiAgICBzdW1tYXJpc2Uod2VudF9iYWQgPSBzdW0oaW8gPT0gMSkgLyBuKCkpCmBgYAoKCiMjIyAkaV9jID4gMCQKCiokaV9jID4gMCAkKgoKYGBge3J9CnVzZXJfaXRpbmVyYXJpZXNfY29tcGxldGUgJT4lIAogICAgZ3JvdXBfYnkodHJpcF9sZW5ndGhfYnVja2V0KSAlPiUgCiAgICBmaWx0ZXIoIWlzLm5hKGljKSwgaWMgPiAwKSAlPiUgCiAgICBtdXRhdGUoc2l0dWF0aW9uID0gY2FzZV93aGVuKAogICAgICAgIGlzID4gMSAmIGlvID09IDEgfiAiRGV2aWF0aW9uIHdhcyBiZXR0ZXIiLAogICAgICAgIGlzID09IDEgJiBpbyA+IDEgfiAiU2NoZWR1bGUgd2FzIGJldHRlciIsIAogICAgICAgIFRSVUUgfiAiQ29tcG91bmQiCiAgICApICU+JSBmYWN0b3IobGV2ZWxzID0gYygiU2NoZWR1bGUgd2FzIGJldHRlciIsICJDb21wb3VuZCIsICJEZXZpYXRpb24gd2FzIGJldHRlciIpLCBvcmRlcmVkID0gVCkKICAgICkgJT4lIAogICAgZ2dwbG90KGFlcyh4ID0gdHJpcF9sZW5ndGhfYnVja2V0LCBmaWxsID0gc2l0dWF0aW9uKSkgKwogICAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgCiAgICBzY2FsZV9maWxsX2JyZXdlcih0eXBlID0gInF1YWwiKSArIAogICAgbGFicyh4ID0gZXhwcmVzc2lvbihwYXN0ZSgiZCJbb10sICIodSkgaW4gbWlucyIpKSwgCiAgICAgICAgIHkgPSAiUHJvcG9ydGlvbiIpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKSArIAogICAgY29vcmRfZmxpcCgpCmdnc2F2ZSgic2l0dWF0aW9ucy1pY19ndF96ZXJvLnBkZiIsIHdpZHRoID0gNSwgaGVpZ2h0ID0gMi41KQoKYGBgCgpXaGVuIHRoZSB1c2VyIGRldmlhdGVzIGZyb20gdGhlIGl0aW5lcmFyeSByZWNvbW1lbmRlZCBieSB0aGUgc2NoZWR1bGUsIHRoZSB1c2VyIG91dHBlcmZvcm1zIHRoZSBjaG9pY2UgcHJvcG9zZWQgYnkgdGhlIHNjaGVkdWxlIGEgc2lnbmlmaWNhbnQgcHJvcG9ydGlvbiBvZiB0aGUgdGltZS4gCgo=